package lib

func init() {
	Probs = append(Probs, Problem{
		Num:         153,
		Discription: "寻找升序数组旋转后的最小值（无重复元素）",
		Level:       2,
		Labels: map[string]int{
			"二分查找": 1,
		},
	})
}

func FindMin(nums []int) int {
	left := 0
	right := len(nums) - 1
	for left < right {
		mid := left + (right-left)/2
		//一定是比mid和right
		//比left和mid的话，left可能就是最小值，不好排除
		//< <= 都可以，因为没有重复数据
		if nums[mid] <= nums[right] {
			//说明右边数组有序，转折点在mid或者mid左边
			right = mid
		} else {
			//说明右边无序，转折点在mid右边，且最小值不可能是mid，因为nums[mid]>nums[right]
			left = mid + 1
		}
	}

	return nums[left]
}
